#include "SplashScreen.h"
#include <QVBoxLayout>
#include <QLabel>
#include <QPainter>

SplashScreen::SplashScreen(QWidget *parent)
    : QWidget(parent), m_progress(0)
{
    // 设置窗口属性
    setWindowFlags(Qt::FramelessWindowHint | Qt::SplashScreen);
    setFixedSize(400, 300);

    // 创建布局和控件
    QVBoxLayout *layout = new QVBoxLayout(this);

    // 添加应用图标或标题
    QLabel *titleLabel = new QLabel("❤️投E行");
    titleLabel->setAlignment(Qt::AlignCenter);
    titleLabel->setStyleSheet("QLabel { font-size: 24px; font-weight: bold;font:fantasy}");

    // 添加进度条
    m_progressBar = new QProgressBar(this);
    m_progressBar->setRange(0, 100);
    m_progressBar->setTextVisible(false);
    m_progressBar->setStyleSheet(
        "QProgressBar {"
        "   border: 2px solid grey;"
        "   border-radius: 5px;"
        "   text-align: center;"
        "}"
        "QProgressBar::chunk {"
        "   background-color: #4CAF50;"
        "   width: 20px;"
        "}"
        );

    layout->addStretch();
    layout->addWidget(titleLabel);
    layout->addStretch();
    layout->addWidget(m_progressBar);

    // 设置背景（可以使用图片或颜色）
    setStyleSheet("background: qlineargradient(x1:0, y1:0, x2:0, y2:1, "
                  "stop:0 #3498db, stop:1 #2980b9);");

    // 定时器用于模拟进度更新
    m_timer = new QTimer(this);
    connect(m_timer, &QTimer::timeout, this, &SplashScreen::updateProgress);
    m_timer->start(50);  // 每50毫秒更新一次
}

SplashScreen::~SplashScreen()
{
}

void SplashScreen::setProgress(int value)
{
    m_progress = qBound(0, value, 100);
    m_progressBar->setValue(m_progress);
}

void SplashScreen::showMessage(const QString &message)
{
    // 可以在这里添加显示消息的逻辑
}

void SplashScreen::updateProgress()
{
    if (m_progress < 100) {
        setProgress(m_progress + 1);
    } else {
        m_timer->stop();
        emit finished();  // 发送完成信号
    }
}
